package com.mk.web.threadpool.queue.blocking;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

/**
 * Created by WangChen on 2018/12/16 13:37.
 */
public class BlockingQueueTest {

    /**
     *
     */
    public static void main(String [] args) {
        BlockingQueue<String> queue = new ArrayBlockingQueue<>(3);


        try {
    //        queue.take(); // 获取并移除此队列的头部，在元素变得可用之前一直等待（如果有必要）。
            queue.put("a");
            queue.put("b");
            queue.put("c");
    //        queue.put("d");// 将指定元素插入此队列中，将等待可用的空间（如果有必要）。
            System.out.println(queue.size());

            queue.poll(2, TimeUnit.SECONDS);
            queue.poll(2, TimeUnit.SECONDS);
            queue.poll(2, TimeUnit.SECONDS);
            queue.poll(2, TimeUnit.SECONDS);// 如果不可行, 阻塞一定时间后放弃

            queue.offer("e", 2, TimeUnit.SECONDS);
            queue.offer("f", 2, TimeUnit.SECONDS);//
            queue.offer("g", 2, TimeUnit.SECONDS);//
            queue.offer("h", 2, TimeUnit.SECONDS);// 如果不可行, 阻塞一定时间后放弃
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(queue.size());
    }
}
